/**
 * 所属节点：添加设备信息
 * 创建人：zm
 * 创建时间：2024年8月19日
 * 最后修改人：zm
 *
 * 修改原因：复制添加和编辑模式，唯一验证不生效
 * 编辑内容：注释85行，扩大验证范围；
 * 编辑时间：2024-09-03
 * 编辑人：chen
 */
cb.define(process.env.__DOMAINKEY__, function () {
  let GDGY01_isv_devicelist_VM_Extend = {
    doAction: function (name, viewModel) {
      if (this[name]) this[name](viewModel);
    },
    init: function (viewModel) {
      let tenantID = viewModel.getAppContext().tenant.tenantId;
      let userInfo = viewModel.getAppContext().user;
      const qianzhui = "/gdgy/pc/isv2";
      viewModel.get("type") &&
        viewModel.get("type").on("afterValueChange", function (data) {
          // 设备类型--值改变后
          // console.log(data);
          let selectValue = data.value.value;
          let selectTypeName = data.value.text;

          if (selectValue == 0) {
            cb.utils.alert("您选择的设备类型为：【" + selectTypeName + "】 请在 「设备标识」 内输入标识。", "warning");
          }
          if (selectValue == 1 || selectValue == 2) {
            cb.utils.alert(
              "您选择的设备类型为：【" + selectTypeName + "】 请在 「设备标识」 内输入IP地址。",
              "warning"
            );
          }
          if (selectValue == 3 || selectValue == 4 || selectValue == 5) {
            cb.utils.alert(
              "您选择的设备类型为：【" + selectTypeName + "】 请在 「设备标识」 内输入MAC地址。",
              "warning"
            );
          }

          viewModel.get("devicecode").setValue(newPseudoGuid());

          function newPseudoGuid() {
            let guid = "";
            for (let i = 1; i <= 32; i++) {
              let n = Math.floor(Math.random() * 16.0).toString(16);
              guid += n;
              if (i == 8 || i == 12 || i == 16 || i == 20) guid += "-";
            }
            return guid;
          }
        });

      viewModel.on("customInit", function (data) {
        //添加设备信息--页面初始化

        viewModel.on("beforeSave", function (args) {
          let pageType = data.originalParams.mode;
          let value = viewModel.get("type").getValue();
          let ipOrMac = viewModel.get("deviceinfo").getValue();
          // console.log(value);
          let checkFlag = false;
          if (value == 1 || value == 2) {
            checkFlag = validateIp(ipOrMac);
            if (checkFlag == false) {
              checkFlag = validateIpAndPort(ipOrMac);
              //console.log(checkFlag);
              if (checkFlag == false) {
                cb.utils.alert("您输入的IP地址有误，请检查后重新输入", "error");
                return false;
              }
            }
          }
          if (value == 3 || value == 4 || value == 5) {
            checkFlag = validateMac(ipOrMac);
            if (checkFlag == false) {
              cb.utils.alert("您输入的MAC地址有误，请检查后重新输入", "error");
              return false;
            }
          }

          // if (pageType == "add") {
          // console.log("this check");
          //脚本调用，验证设备标识是否存在；脚本id:2053369937088479242;脚本名称:deviceInfoUnique
          // let locationCodeCheck = cb.rest.invokeFunction(
          //   "GDGY01.device.deviceInfoUnique",
          //   { deviceinfo: ipOrMac },
          //   function (err, res) {},
          //   viewModel,
          //   { async: false }
          // );
          // const res = locationCodeCheck.result.rst;
          // if (res.length > 0) {
          //   //console.log(false);
          //   cb.utils.alert("当前输入的IP地址或MAC地址在系统中已经存在，请确认后重新输入！", "error");
          //   return false;
          // }
          /**
           * 张明迁移
           */
          let id = 0;
          if (viewModel.get("id").getValue() != "undefined") {
            id = viewModel.get("id").getValue();
          }
          const url_locationCodeCheck =
            qianzhui + "/device/GetDeviceList?deviceinfo=" + ipOrMac + "&tenant_id=" + tenantID + "&id=" + id;
          const proxy_locationCodeCheck = viewModel.setProxy({
            locationCodeCheck: {
              url: url_locationCodeCheck,
              method: "GET",
              options: {
                mask: false,
              },
            },
          });
          const resultaa = proxy_locationCodeCheck.locationCodeCheckSync({});
          if (resultaa && resultaa.dataList.length > 0) {
            cb.utils.alert("当前输入的IP地址或MAC地址在系统中已经存在，请确认后重新输入！", "error");
            return false;
          }
          // }
        });

        const validateIp = (str) =>
          /^(((25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d)))\.){3}(25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d))))$/.test(str);
        const validateIpAndPort = (str) =>
          /^(((25[0-5]|2[0-4]d|((1\d{2})|([1-9]?\d)))\.){3}(25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d))))\:([0-9]|[1-9]\d{1,3}|[1-5]\d{4}|6[0-4]\d{4}|65[0-4]\d{2}|655[0-2]\d|6553[0-5])$/.test(
            str
          );
        const validateMac = (str) =>
          /^[A-Fa-f0-9]{2}([-:]?[A-Fa-f0-9]{2})([-:.]?[A-Fa-f0-9]{2})([-:]?[A-Fa-f0-9]{2})([-:.]?[A-Fa-f0-9]{2})([-:]?[A-Fa-f0-9]{2})$/.test(
            str
          );
      });
    },
  };
  try {
    module.exports = GDGY01_isv_devicelist_VM_Extend;
  } catch (error) {}
  return GDGY01_isv_devicelist_VM_Extend;
});
